mex matlab 与C语言的简单使用

您所在的位置:网站首页 matlab mex命令 mex matlab 与C语言的简单使用

mex matlab 与C语言的简单使用

2024-07-14 06:27| 来源: 网络整理| 查看: 265

使用mex在matlab中调用C语言的函数,简单记录一下 1.在同一个文件夹下新建.txt,修改为.c,在vs中打开进行编译;在同一个文件夹下新建matlab的文件,调用C语言的主函数

2.编辑C语言代码 #include "mex.h" /******************************************************************************/ /** main function * @param[in] nlhs:number of left-hand side(output) plhs: the param of left-hand side(output) nrhs:number of right-hand side(input) prhs: the param of right-hand side(input) * * @return * *//* * History : * 1.Date : 2020/8/3 * Author : * Modification : Created function *******************************************************************************/ void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) { /* input the x y z data */ if (nrhs == 5) { } else { mexPrintf("hello"); } } 3.在matlab同一个目录下编译C代码

matlab中输入mex -g swim_main.c  % 暂时编译只使用这个文件即可,每次修改需要重新编译

编译成功:>> mex -g swim_main.c 使用 'MinGW64 Compiler (C)' 编译。 MEX 已成功完成。

若编译不成功,查看代码是否有错误,前提是安装了mex,

setenv('MW_MINGW64_LOC','C:\TDM-GCC-64') % 按安装好后还需要在matlab中运行这句话,配置一下环境 4.调用程序

swim_mexFunction.m中编写

swim_main(0,0); % C语言中函数的入口,运行文件

运行swim_main(0,0),会执行C代码;

关于程序的数据和输出,比如在运行函数是[a1,a2,a3,a4]=swim_main(x, y, z, norm,1); % 这种形式nrhs=5,输入的个数; nlhs=4,输出的个数。程序自动识别,不需要指定输入输出个数。

5.将程序运行的多个结果传递出matlab函数 void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) { float *filter_x, *filter_y, *filter_z; ACC_DATA_T* XYZ_filtered; DealSwimData(x, y, z, &XYZ_filtered); plhs[0] = mxCreateNumericMatrix(1, 1, mxSINGLE_CLASS, mxREAL); plhs[1] = mxCreateNumericMatrix(1, 1, mxSINGLE_CLASS, mxREAL); plhs[2] = mxCreateNumericMatrix(1, 1, mxSINGLE_CLASS, mxREAL); /* 后面参数不同,输出数据的类型不同*/ filter_x = mxGetPr(plhs[0]); filter_y = mxGetPr(plhs[1]); filter_z = mxGetPr(plhs[2]); *filter_x = XYZ_filtered->x; //将这三个数据传递出去 *filter_y = XYZ_filtered->y; *filter_z = XYZ_filtered->z; }

matlab里面的代码为

for j=1:length(xdata) [xfilter(j), yfilter(j), zfilter(j)] = swim_main(0,xdata(j),ydata(j),zdata(j)); % C语言中函数的入口,运行文件 end

..



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3